package club.beimeng.On2.InsertSort;

import java.util.Arrays;

public class InsertSort {
    private static void swap(int[] nums,int a,int b){
        nums[a] = nums[a] ^ nums[b];
        nums[b] = nums[a] ^ nums[b];
        nums[a] = nums[a] ^ nums[b];
    }

    /**
     * 交换法实现插入排序。
     * @param nums int[]
     */
    public static void sort1(int[] nums){
        // 交换法
        for(int i=1;i<nums.length;i++){
            int j = i;
            while (j>=1&&nums[j]<nums[j-1]){
                swap(nums,j,j-1);
                j--;
            }
        }
    }

    /**
     * 移动法实现插入排序。
     * @param nums int[]
     */
    public static void sort2(int[] nums){
        for (int i=1;i<nums.length;i++){
            int temp = nums[i];
            int j = i;
            while (j>=1 && temp < nums[j-1]){
                nums[j] = nums[j-1];
                j--;
            }
            nums[j]=temp;
        }
    }


    public static void main(String[] args) {
        int[] nums={2,4,5,1,3,6,0,8,7,9,10,-9,-2,-1,-5,-4,-3,-6,-7,-8,-10};
        sort2(nums);
        System.out.println("nums = " + Arrays.toString(nums));
    }
}
